#ifndef _SR_H_
#define _SR_H_

#include "esp_err.h"
#include "esp_log.h"
#include "sr.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/event_groups.h"
#include "esp_wn_iface.h"
#include "esp_wn_models.h"
#include "esp_afe_sr_models.h"
#include "esp_mn_iface.h"
#include "esp_mn_models.h"
#include "model_path.h"

typedef void(*esp_sr_mulit_cb)(int index);
typedef void(*esp_sr_wakeup_cb)(bool wakeup);

typedef struct
{
    esp_sr_mulit_cb     mulit_func;     //命令词识别回调函数
    esp_sr_wakeup_cb    wakeup_func;    //唤醒词识别回调函数
}ESP_SR_cb_t;

/** 语音识别唤醒功能初始化
 * @param cfg 回调函数
 * @return 成功 or 失败
 */
esp_err_t esp_sr_init(ESP_SR_cb_t* cfg);

esp_err_t esp_sr_start(void);

/** 启用/禁用唤醒词检测
 * @param enable 使能 or 失能
 * @return 无
 */
void esp_sr_enable(bool enable);

/** 唤醒词检测是否在进行
 * @param 无
 * @return 是 or 否
 */
bool esp_sr_is_process(void);

/** 获取输入数据的大小
 * @param 无
 * @return size（字）
 */
int esp_sr_get_feedsize(void);

/** 唤醒语音数据输入
 * @param data 16位pcm数据
 * @param len 数据长度,单位(字)
 * @return 无
 */
void esp_sr_feed(int16_t *data,int len);

void esp_sr_add_command(int index,const char* command);


#endif
